Ana içeriğe geç

Referances & Barrowing

Bu kısımda referanslara ve ödünç alma sistemlerine bakacağız.

Referanslar bir değere ownership'ini almadan referans yapamızı sağlar. Yani değeri barrow (ödünç almış) yapmış oluruz.

İki adet referansımız bulunmaktadır. Bunlar shared yani paylaşılmış ve mutable yani değiştirilebilir referenslar olmaktadır.

Shared referance ifadeleri değeri okumamıza izin vermek ile beraber değiştirmemize izin vermemektedir. Bir değer karşı istediğimiz kadar istediğimiz zaman shared referance oluşturabiliriz.

Diğer bir taraftan mutable referance değerleri hem değeri okumaya hem de değiştirmeyi sağlamaktadır. Ancak shared referance aksine o veri için aktif olan başka bir mutable referance değerine sahip olamazsınız.

Hadi bu kavramlara bakalım:

fn main(){
let s = String::from("Merhaba");
change_string(&s)
}
fn change_string(bir_string: &String){
bir_string.push_str(" Dünya")
}

Bu şekilde yaptığımızda hata olarak Rust bize s değerini mutable yapmamızı söylemektedir.

fn main(){
let mut s = String::from("Merhaba");
change_string(&mut s);
println!("{}",s);
}
fn change_string(bir_string: &mut String){
bir_string.push_str(" Dünya")
}

Kodumuzu şimdi çalıştırdığımızda mutable referance yapısını kullandığımızı ve sorunsuz kodumuzun çalıştığını görüntüleyebiliriz.

Merhaba Dünya

Bu konseptler Rust dilini Rust dili yapmaktadır ve büyük önem arz etmektedir.